#ifndef EMPLOYEE_H
#define EMPLOYEE_H



//职工信息结构体 
	typedef struct { 
		char name[50] ;//姓名 
		char sex[50] ;// 性别 
		char birthdate[50] ;//出生日期 
		char workday[50] ;//工作日期 
		char department[50] ;//所属部门
	    char category[50] ;//人员类别 
		char rating[50] ;//技术等级 
		char techTitle[50] ;//技术职称 
		char education[50] ;//文化程度 
		char nation[50] ;//民族 
		char nativeplace[100] ;//籍贯 
		char address[100] ;//现住址 
	}EmployeeInfo ; 
	
		
	// 职工工资补贴等结构体
typedef struct {
    float basicSalary;// 基本工资 
    float postAllowance;//岗位津贴 
    float priceAllowance;//物价津贴 
    float positionAllowance;//职务津贴 
    float housingAllowance;//住房津贴 
    float rent;//房租 
    float overtimePay;//加班费 
    float nightShiftPay;//夜班费 
    float sickLeaveDeduction;//病假扣款 
    float personalLeaveDeduction;//事假扣款 
    float absenceDeduction;//旷工扣款 
    float otherDeduction;//其他扣款 
    float actualSalary;//实发工资 
} EmployeeSalary;


// 职工出勤结构体
typedef struct {
    int attendanceDays;//出勤天数 
    int injuryDays;//工伤日数 
    int maternityDays;//产假天数 
    int sickLeaveDays;//病假天数 
    int absenceDays;//旷工天数 
    int personalLeaveDays;//事假天数 
    int overtimeDays;//加班天数 
    int nightShiftDays;//夜班天数 
    float sickLeaveCoefficient;//病假系数 
} EmployeeAttendance;


// 综合职工信息结构体
typedef struct {
    EmployeeInfo info;
    EmployeeSalary salary;
    EmployeeAttendance attendance;
} Employee;


// 从文件中读取员工信息
int readEmployeesFromFile(Employee employees[], int *employeeCount);
// 将员工信息保存到文件
void SaveEmployeesToFile(Employee employees[], int employeeCount);
// 插入员工数据
int insertEmployee(Employee employees[], int employeeCount);
// 修改员工数据
void modifyEmployee(Employee employees[],int *employeeCount);
// 删除员工数据
void deleteEmployee(Employee employees[],int *employeeCount);
// 查询员工数据
void queryEmployee(Employee employees[], int *employeeCount);
//统计员工数据
void statistics(Employee employees[] , int employeeCount);
// 计算个人月工资
void calculatePersonalSalary(Employee employees[], int employeeCount);
// 修正病假扣款系数
void modifySickLeaveCoefficient(Employee employees[], int *employeeCount);
// 打印工资单 
void menu(Employee employees[], int employeeCount);
//打印所有员工信息
void printfallemployee(Employee employees[], int employeeCount);
// 主菜单
void showMenu();


#endif